package org.springblade.common.exception;


public enum ResultCode implements IResultCode {

	SUCCESS(200, "操作成功", 200, "操作成功"),
	WARN(300, "业务警告", 300, "业务警告"),
	FAILURE(400, "业务异常", 400, "业务异常"),
	PARAM_VALID_ERROR(400, "参数校验失败", 400, "参数校验失败"),
	PARAM_MISS(400, "缺少必要的请求参数", 400, "缺少必要的请求参数"),

	BELONG_TENANT_DISABLE(401, "租户被禁用", 401, "租户被禁用"),
	NO_AVAILABLE_IDENTITIES_MANAGER(401, "无可用身份，请联系系统管理员", 401, "无可用身份，请联系系统管理员"),
	NO_AVAILABLE_IDENTITIES_MEMBER(401, "无可用身份，请联系机构管理员", 401, "无可用身份，请联系机构管理员"),
	WRONG_TOKEN(401, "token有误", 401, "token有误"),
	OUT_TIME_TOKEN(401, "token过期", 401, "token过期"),
	ACCOUNT_DISABLE(401, "账号被禁用", 401, "账号被禁用"),
	ACCOUNT_DISABLE_LOGOUT(401, "账号被禁用", 401, "账号被禁用,已被自动登出"),
	ACCOUNT_RESET_PASS(401, "您账号的密码已被修改，请重新登录", 401, "密码被修改，请重新登录"),
	NOT_FOUND_MEMBER(401, "账号或密码错误", 401, "账号或密码错误"),

	DISABLE_TARGET_ORGANIZATION(401, "您的当前机构被禁用，请联系系统管理员进行处理", 401, "您的当前机构被禁用，请联系系统管理员进行处理"),
	DISABLE_TARGET_DEPARTMENT_ROLE(401, "您的当前角色被禁用，请联系机构管理员进行处理", 401, "您的当前角色被禁用，请联系机构管理员进行处理"),

	REQ_REJECT(403, "请求被拒绝", 403, "请求被拒绝"),
	USER_MENU_FORBIDDEN(40301, "当前菜单已关闭显示，请联系系统管理员进行处理", 403, "当前菜单已关闭显示，请联系系统管理员进行处理"),
	USER_MENU_ERROR(40302, "您的当前角色无对应的菜单权限，请联系机构管理员进行处理", 403, "您的当前角色无对应的菜单权限，请联系机构管理员进行处理"),
	MANAGER_MENU_FORBIDDEN(40303, "当前菜单已关闭显示，请联系系统管理员进行处理", 403, "当前菜单已关闭显示，请联系系统管理员进行处理"),
	MANAGER_MENU_ERROR(40304, "您无对应的菜单权限，请联系系统管理员进行处理", 403, "您无对应的菜单权限，请联系系统管理员进行处理"),
	DEVELOPER_MENU_FORBIDDEN(40305, "当前菜单已关闭显示，请联系系统管理员进行处理", 403, "当前菜单已关闭显示，请联系系统管理员进行处理"),

	NOT_FOUND(404, "404 没找到请求", 404, "404 没找到请求"),
	METHOD_NOT_SUPPORTED(405, "不支持当前请求方法", 405, "不支持当前请求方法"),


	TENANT_DISABLE(40601, "您的所属租户已被禁用，请联系系统管理员进行处理", 406, "您的所属租户已被禁用，请联系系统管理员进行处理"),
	ALL_ORGANIZATION_DISABLE(40602, "您的管理机构均被禁用，请联系系统管理员进行处理", 406, "您的管理机构均被禁用，请联系系统管理员进行处理"),
	CURRENT_ORGANIZATION_DISABLE(40603, "您的当前机构被禁用，请联系系统管理员进行处理", 406, "您的当前机构被禁用，请联系系统管理员进行处理"),
	NOT_MENU_AUTH(40604, "您当前角色暂无菜单权限，请联系机构管理员进行处理", 406, "您当前角色暂无菜单权限，请联系机构管理员进行处理"),
	NONE_MEMBER_ORGANIZATION(40605, "您的账号无任何所属机构，请联系机构管理员进行处理", 406, "您的账号无任何所属机构，请联系机构管理员进行处理"),
	NONE_MEMBER_DEPARTMENT_ROLE(40606, "您的账号无任何部门角色，请联系机构管理员进行处理", 406, "您的账号无任何部门角色，请联系机构管理员进行处理"),
	ALL_BELONG_ORGANIZATION_DISABLE(40607, "您的所属机构均被禁用，请联系系统管理员进行处理", 406, "您的所属机构均被禁用，请联系系统管理员进行处理"),
	ALL_BELONG_DEPARTMENT_DISABLE(40608, "您的所属部门均被禁用，请联系机构管理员进行处理", 406, "您的所属部门均被禁用，请联系机构管理员进行处理"),
	ALL_BELONG_ROLE_DISABLE(40609, "您的角色均被禁用，请联系机构管理员进行处理", 406, "您的角色均被禁用，请联系机构管理员进行处理"),
	DISABLE_CURRENT_ROLE(40610, "您当前角色被禁用，请联系机构管理员进行处理", 406, "您当前角色被禁用，请联系机构管理员进行处理"),
	DISABLE_CURRENT_DEPARTMENT(40611, "您当前角色的所属部门被禁用，请联系机构管理员进行处理", 406, "您当前角色的所属部门被禁用，请联系机构管理员进行处理"),
	ALL_ORGANIZATION_DEPARTMENT_DISABLE(40612, "您的所属部门均被禁用，请联系机构管理员进行处理", 406, "您的所属部门均被禁用，请联系机构管理员进行处理"),
	ALL_ORGANIZATION_DEPARTMENT_ROLE_DISABLE(40613, "您的角色均被禁用，请联系机构管理员进行处理", 406, "您的角色均被禁用，请联系机构管理员进行处理"),
	ORGANIZATION_NOT_BIND_ROLE(40614, "您的当前角色被解除关联，请联系机构管理员进行处理", 406, "您的当前角色被解除关联，请联系机构管理员进行处理"),
	ORGANIZATION_NOT_BIND_ACCOUNT(40615, "您的当前机构被解除关联，请联系机构管理员进行处理", 406, "您的当前机构被解除关联，请联系机构管理员进行处理"),
	INCORPORATION_DISABLE(40616, "您的所属组织被禁用，请联系平台管理员进行处理", 406, "您的所属组织被禁用，请联系平台管理员进行处理"),

	MEDIA_TYPE_NOT_SUPPORTED(415, "不支持当前媒体类型", 415, "不支持当前媒体类型"),
	INTERNAL_SERVER_ERROR(500, "服务器异常", 500, "服务器异常");

	final int code;
	final String message;
	final String h5msg;
	final int httpCode;


//    private ResultCode(final int code, final String message, final int httpCode) {
//        this.code = code;
//        this.message = message;
//        this.httpCode = httpCode;
//    }

	private ResultCode(final int code, final String message, final int httpCode, final String h5msg) {
		this.code = code;
		this.message = message;
		this.httpCode = httpCode;
		this.h5msg = h5msg;
	}

	@Override
	public int getCode() {
		return this.code;
	}

	@Override
	public String getMessage() {
		return this.message;
	}

	public int getHttpCode() {
		return httpCode;
	}

	public String getH5msg() {
		return h5msg;
	}
}
